package zack.gateway.center.domain.manage.repository;



import zack.gateway.center.domain.manage.model.vo.GatewayServerDetailVO;
import zack.gateway.center.domain.manage.model.vo.GatewayServerVO;
import zack.gateway.center.domain.manage.model.vo.ApplicationInterfaceMethodVO;
import zack.gateway.center.domain.manage.model.vo.ApplicationInterfaceVO;
import zack.gateway.center.domain.manage.model.vo.ApplicationSystemVO;

import java.util.List;

/**
 * @author   zack
 * @description 网关配置仓储服务
   */
public interface IConfigManageRepository {

    List<GatewayServerVO> queryGatewayServerList();

    boolean registerGatewayServerNode(String groupId, String gatewayId, String gatewayName, String gatewayAddress, Integer available);

    GatewayServerDetailVO queryGatewayServerDetail(String gatewayId, String gatewayAddress);

    boolean updateGatewayStatus(String gatewayId, String gatewayAddress, Integer available);

    List<String> queryGatewayDistributionSystemIdList(String gatewayId);

    List<ApplicationSystemVO> queryApplicationSystemList(List<String> systemIdList);

    List<ApplicationInterfaceVO> queryApplicationInterfaceList(String systemId);
    List<ApplicationInterfaceVO> queryApplicationInterfaceList(List<String> interfaceIdList);

    List<ApplicationInterfaceMethodVO> queryApplicationInterfaceMethodList(String systemId, String interfaceId);

    List<ApplicationInterfaceMethodVO> queryApplicationInterfaceMethodListByKeys(List<InterfaceKey> keys);

    String queryGatewayDistributionBySystemId(String systemId);


    List<GatewayServerDetailVO> queryGatewayServerDetailList();

    ApplicationSystemVO queryApplicationSystemBySystemId(String systemId);

    void distributionGatewayServerNode(String groupId, String gatewayId, String systemId, String systemName);
}

